#include <stdio.h>
/**
 * 函数指针
 */

void print(int a) { printf("输出的数值：%d\n", a); }

int max(int a, int b) { return a > b ? a : b; }
int min(int a, int b) { return a < b ? a : b; }
int sum(int a, int b) { return a + b; };

/**
 * 有两个整数a和b，由用户输入1,2或3。
 * 如输入1，程序就给出a和b中的大者，
 * 输入2，就给出a和b中的小者，
 * 输入3，则求a与b之和。
 */
int main() {
    // 方式一，取函数的地址
    void (*fun_p)(int); // 定义一个函数指针
    fun_p = &print;
    fun_p(1);

    // 方式二，直接使用函数名，函数名也是地址
    void (*fun_p2)(int) = print;
    fun_p2(2);

    int input = 3;

    int (*fun_p3)(int, int); // 函数指针
    switch (input) {
    case 1:
        fun_p3 = max;
        break;
    case 2:
        fun_p3 = min;
        break;
    case 3:
        fun_p3 = sum;
        break;
    default:
        break;
    }
    int result = fun_p3(1, 2);
    printf("%d\n", result);
}